package com.cloud.schedule.config;

import cn.hutool.extra.spring.SpringUtil;
import com.cloud.schedule.bean.SpringScheduledCron;
import com.cloud.schedule.dao.CronRepository;

/**
 * @author zhaoyangfu - 2020/7/29 17:05
 */
public interface ScheduledTask extends Runnable {

    /**
     * 定时任务方法
     */
    void execute();
    /**
     * 实现控制定时任务启用或禁用的功能
     */
    @Override
    default void run() {
        CronRepository repository = SpringUtil.getBean(CronRepository.class);
        SpringScheduledCron scheduledCron = repository.findByCronKey(this.getClass().getName());
        if (!scheduledCron.isStatus()) {
            return;
        }
        execute();
    }
}